/*
 ***************************************************************************************
 * All rights Reserved, Designed By RTF
 * @Title:  ProducerProvider.java   
 * @Package com.rtf.repair.mq.common
 * @Description: 生产者提供的方法   
 * @author: 司福林
 * @date:   2020-10-15 16:04:24   
 * @version V1.0 
 * @Copyright: 2020 RTF. All rights reserved.
 * 注意：本内容仅限于公司内部使用，禁止外泄以及用于其他的商业目
 *  ---------------------------------------------------------------------------------- 
 * 文件修改记录
 *     文件版本：         修改人：             修改原因：
 ***************************************************************************************
 */
package com.rtf.framework.mq.common;

import java.io.Serializable;

/**
 *  
 * @Descript 生产者提供的方法
 * @ClassName:  ProducerProvider
 * @author: 67077
 * @date:   2020-10-15 16:04:24
 * @since:  v1.0
 */
public interface MessageProducer {

	public Object getProducer();

	/**
	 * @param topic 主题
	 * @param key 消息主键 用于消息的分发计算
	 * @param msg 消息体
	 */
	public void sendMsg(String topic, String key, Serializable msg);

	/**
	 * @param topic 主题
	 * @param key 消息主键 用于消息的分发计算
	 * @param msg 消息体
	 * @param callBack 回调函数
	 */
	public void sendMsg(String topic, String key, Serializable msg, CallBack callBack);

	/**
	 * @param topic 主题
	 * @param key 消息主键 
	 * @param msg 消息体
	 * @param parttion 分区或者队列索引
	 */
	public void sendMsg(String topic, String key, Serializable msg, Integer parttion);

	/**
	 * @param topic 主题
	 * @param key 消息主键 
	 * @param msg 消息体
	 * @param parttion 分区或者队列索引
	 * @param callBack 回调函数
	 */
	public void sendMsg(String topic, String key, Serializable msg, Integer parttion, CallBack callBack);

	/**
	 * @param topic 主题
	 * @param key 消息主键 
	 * @param msg 消息体
	 * @param tag rq的 tag
	 */
	public void sendMsg(String topic, String tag, String key, Serializable msg);

	/**
	 * @param topic 主题
	 * @param key 消息主键 
	 * @param msg 消息体
	 * @param tag rq的 tag
	 * @param callBack 回调函数
	 */
	public void sendMsg(String topic, String tag, String key, Serializable msg, CallBack callBack);

	/**
	 * @param topic 主题
	 * @param key 消息主键 
	 * @param msg 消息体
	 * @param parttion 分区或者队列索引
	 * @param tag rq的 tag
	 */
	public void sendMsg(String topic, String tag, String key, Serializable msg, Integer parttion);

	/**
	 * @param topic 主题
	 * @param key 消息主键 
	 * @param msg 消息体
	 * @param parttion 分区或者队列索引
	 * @param tag rq的 tag
	 * @param callBack 回调函数
	 */
	public void sendMsg(String topic, String tag, String key, Serializable msg, Integer parttion, CallBack callBack);

}
